﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class Jogo
    {
        private int cenario;
        private Jogador jogador;
        private Inimigo[] inimigos = null;
        private int numInim;
        public const int HEIGHT = 400;
        public const int MAX_INIMIGO = 5;
        private bool started = false;
        private Random rd_h = new Random();
        private Random rd_i = new Random();
        private bool usarmouse = false;
        private Inimigo novoInimigo;

        public bool Usarmouse
        {
            get { return usarmouse; }
            set { usarmouse = value; }
        }


        public bool Started
        {
            get { return started; }
            set { started = value; }
        }


     
        public Jogo()
            : this(1, null, new Inimigo[5], 0)
        {

        }

        public Jogo(int jcenario, Jogador jjogador, Inimigo[] jinimigos, int jnumInim)
        {
            cenario = jcenario;
            jogador = jjogador;
            inimigos = jinimigos;
            numInim = jnumInim;
            initJogo();
        }


        public void initJogo()
        {
            initInimigos();
            started = true;
        }

        public void restart()
        {
            // copia do construtor vazio
            cenario = 1;
            jogador = null;
            inimigos = new Inimigo[5];
            numInim = 0;
            // inicalizacao dos inimigos e marco do inicio de fato
            initJogo();
        }

        
        public void  initInimigos()
        {
            
            
            for(int i=0; i < MAX_INIMIGO ; i++)
            {
                inimigos[i]= new Inimigo();
            }
        }

        public Inimigo getInimigos()
        {

            int id_i;
            if (numInim < MAX_INIMIGO)
            { 
                do { 
                    id_i = rd_i.Next(MAX_INIMIGO);
                }      while ( inimigos[id_i].getStatus());
                int id_h = rd_h.Next(HEIGHT - Inimigo.HEIGHT) ;
                novoInimigo = inimigos[id_i];
                novoInimigo.initInimigo(id_i, id_h, HEIGHT);
                numInim++;
                novoInimigo = inimigos[id_i];
                return novoInimigo;
            }
            return null;

        }

        public void inimigosAtirar()
        {
            novoInimigo.atirar();
        }

        public bool getAtirar()
        {
            // verifica se o status de atirar esta abilitado em algum deles.
            for (int i = 0; i < MAX_INIMIGO; i++)
                if (inimigos[i].Atirando)
                    return true;
            return false;
        }

        public bool morreInimigo(int id, float perc)
        {
            if (inimigos[id].morrer(perc))
            {
               numInim--;
               return true;
            }
            else
                return false;
        }

        public void play()
        {


        }
    }
    
}
